home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-06-24 | 17.0 KB | 1,118 lines |
-
- PLR1_clicked: dc.b 0
- PLR2_clicked: dc.b 0
- popping: ds.l 5*4
- targdist: dc.w 0
- targetydiff: dc.l 0
- PLR1_TimeToShoot: dc.w 0
- PLR2_TimeToShoot: dc.w 0
-
- tempangpos: dc.w 0
-
- MaxFrame: dc.w 0
- BULTYPE: dc.w 0
- AmmoInMyGun: dc.w 0
-
- Player1Shot:
-
- tst.w PLR1_TimeToShoot
- beq.s okcanfire
-
- move.w TempFrames,d0
- sub.w d0,PLR1_TimeToShoot
- bge PLR1_nofire
- move.w #0,PLR1_TimeToShoot
- bra PLR1_nofire
-
- okcanfire:
-
- moveq #0,d0
- move.b p1_gunselected,d0
- move.b d0,tempgun
-
-
- move.l LINKFILE,a6
- lea GunBulletTypes(a6),a6
- lea BulletAnimData-GunBulletTypes(a6),a5
- lea (a6,d0.w*8),a6
- move.w G_BulletType(a6),d0 ; bullet type
- move.w d0,BULTYPE
- move.l #PLAYERONEAMMO,a0
- move.w (a0,d0.w*2),AmmoInMyGun
-
- muls #B_BulStatLen,d0
- add.w d0,a5
-
- move.w B_MovementSpeed+2(a5),BulletSpd
-
- ; tst.w (a6)
- ; beq.s .itsaclick
-
- tst.b p1_fire
- beq PLR1_nofire
- ; bra .itsahold
- ;
- ;.itsaclick:
- ; tst.b p1_clicked
- ; beq PLR1_nofire
- ;
- ;.itsahold:
-
- move.w PLR1_angpos,d0
- move.w d0,tempangpos
- move.l #SineTable,a0
- lea (a0,d0.w),a0
- move.w (a0),tempxdir
- move.w 2048(a0),tempzdir
- move.w PLR1_xoff,tempxoff
- move.w PLR1_zoff,tempzoff
- move.l PLR1_yoff,tempyoff
- add.l #10*128,tempyoff
- move.b PLR1_StoodInTop,tempStoodInTop
- move.l PLR1_Roompt,tempRoompt
- move.l #%100011,d7
- move.w #-1,d0
- move.l #0,targetydiff
- move.l #$7fff,d1
-
- move.l ZoneAdds,a3
-
- move.l #PLR1_ObsInLine,a1
- move.l ObjectData,a0
- move.l #PLR1_ObjDists,a2
- findclosestinline
-
- tst.w (a0)
- blt outofline
-
- cmp.b #3,16(a0)
- beq notlinedup
-
- tst.b (a1)+
- beq.s notlinedup
- btst #0,17(a0)
- beq.s notlinedup
- tst.w 12(a0)
- blt.s notlinedup
- move.b 16(a0),d6
- btst d6,d7
- beq.s notlinedup
-
- tst.b numlives(a0)
- beq.s notlinedup
- move.w (a0),d5
- move.w (a2,d5.w*2),d6
- move.w 4(a0),d2
- ext.l d2
- asl.l #7,d2
- sub.l PLR1_yoff,d2
- move.l d2,d3
- bge.s .oknotneg
- neg.l d2
- .oknotneg:
- divs #44,d2
- cmp.w d6,d2
- bgt.s notlinedup
-
- cmp.w d6,d1
- blt.s notlinedup
- move.w d6,d1
- move.l a0,a4
-
- ; We have a closer enemy lined up.
- move.l d3,targetydiff
- move.w d5,d0
-
- notlinedup:
- add.w #64,a0
- bra findclosestinline
-
- outofline:
-
-
- move.w d1,targdist
-
- move.l targetydiff,d5
- sub.l PLR1_height,d5
- add.l #18*256,d5
- move.w d1,closedist
-
- move.w BulletSpd,d2
- asr.w d2,d1
- tst.w d1
- bgt.s okdistthing
- moveq #1,d1
- okdistthing
- divs d1,d5
- move.w d5,bulyspd
-
- move.w AmmoInMyGun,d2
- move.w G_BulletsPerShot(a6),d1
- cmp.w d1,d2
- bge.s .okcanshoot
-
- move.l PLR1_Obj,a2
- move.w (a2),d0
- move.l #ObjRotated,a2
- move.l (a2,d0.w*8),Noisex
- move.w #100,Noisevol
- move.w #100,PLAYERONENOISEVOL
- move.w #12,Samplenum
- clr.b notifplaying
- move.b #$fb,IDNUM
- jsr MakeSomeNoise
-
- rts
-
- .okcanshoot:
-
- cmp.b #'s',mors
- beq.s .notplr1
- move.l PLR1_Obj,a2
- move.w #1,ObjTimer+128(a2)
- .notplr1
-
- move.w G_DelayBetweenShots(a6),PLR1_TimeToShoot
-
- move.b MaxFrame,PLR1_GunFrame
- sub.w d1,d2
-
- move.l #PLAYERONEAMMO,a2
- add.w BULTYPE,a2
- add.w BULTYPE,a2
- move.w d2,(a2)
-
- move.l PLR1_Obj,a2
- move.w (a2),d2
- move.l #ObjRotated,a2
- move.l (a2,d2.w*8),Noisex
- move.w #100,PLAYERONENOISEVOL
- move.w #300,Noisevol
- move.w G_SoundEffect(a6),Samplenum
- move.b #2,chanpick
- clr.b notifplaying
- movem.l d0/a0/d5/d6/d7/a6/a4/a5,-(a7)
- move.b #$fb,IDNUM
- jsr MakeSomeNoise
- movem.l (a7)+,d0/a0/d5/d6/d7/a6/a4/a5
-
- tst.w d0
- blt nothingtoshoot
-
- tst.l B_Gravity(a5)
- beq.s .notuseaim
- move.w PLR1_AIMSPD,d2
- move.w #8,d1
- sub.w BulletSpd,d1
- asr.w d1,d2
- move.w d2,bulyspd
- .notuseaim
-
- tst.w B_VisibleOrInstant+2(a5)
- beq PLR1FIREBULLET
-
- ; instant effect: check for hitting:
-
- move.w G_BulletsPerShot(a6),d7
-
- FIREBULLETS:
-
- movem.l a0/a1/d7/d0/a4/a5,-(a7)
- jsr GetRand
-
- move.l ObjectPoints,a1
- move.w (a4),d1
- lea (a1,d1.w*8),a1
-
- and.w #$7fff,d0
- move.w (a1),d1
- sub.w PLR1_xoff,d1
- muls d1,d1
- move.w 4(a1),d2
- sub.w PLR1_zoff,d2
- muls d2,d2
- add.l d2,d1
- asr.l #6,d1
- ext.l d0
- asl.l #1,d0
- cmp.l d1,d0
- bgt.s .hitplr
-
- movem.l (a7)+,a0/a1/d7/d0/a5/a4
- move.l d0,-(a7)
- bsr PLR1MISSINSTANT
- move.l (a7)+,d0
-
- bra.s .missplr
- .hitplr:
-
- movem.l (a7)+,a0/a1/d7/d0/a5/a4
- move.l d0,-(a7)
- bsr PLR1HITINSTANT
- move.l (a7)+,d0
-
- .missplr:
-
- subq #1,d7
- bgt.s FIREBULLETS
-
- rts
-
- PLR1_AIMSPD: dc.l 0
-
- nothingtoshoot:
- move.w PLR1_AIMSPD,d0
- move.w #8,d1
- sub.w BulletSpd,d1
- asr.w d1,d0
- move.w d0,bulyspd
- tst.w B_VisibleOrInstant+2(a5)
- beq PLR1FIREBULLET
-
- move.w #0,bulyspd
-
- move.w PLR1_xoff,oldx
- move.w PLR1_zoff,oldz
- move.w PLR1_sinval,d0
- asr.w #7,d0
- add.w oldx,d0
- move.w d0,newx
- move.w PLR1_cosval,d0
- asr.w #7,d0
- add.w oldz,d0
- move.w d0,newz
- move.l PLR1_yoff,d0
- add.l #10*128,d0
- move.l d0,oldy
-
- move.l d0,d1
- jsr GetRand
- and.w #$fff,d0
- sub.w #$800,d0
- ext.l d0
- add.l d0,d1
-
- move.l d1,newy
-
- st exitfirst
- clr.b wallbounce
- move.w #0,extlen
- move.b #$ff,awayfromwall
- move.w #%0000010000000000,wallflags
- move.l #0,StepUpVal
- move.l #$1000000,StepDownVal
- move.l #0,thingheight
- move.l PLR1_Roompt,objroom
- movem.l d0-d7/a0-a6,-(a7)
-
- .again:
- jsr MoveObject
- tst.b hitwall
- bne.s .nofurther
- move.w newx,d0
- sub.w oldx,d0
- add.w d0,oldx
- add.w d0,newx
- move.w newz,d0
- sub.w oldz,d0
- add.w d0,oldz
- add.w d0,newz
- move.l newy,d0
- sub.l oldy,d0
- add.l d0,oldy
- add.l d0,newy
- bra .again
-
- .nofurther:
-
- movem.l (a7)+,d0-d7/a0-a6
-
- move.l PlayerShotData,a0
- move.w #19,d1
- .findonefree2
- move.w 12(a0),d2
- blt.s .foundonefree2
- adda.w #64,a0
- dbra d1,.findonefree2
-
- rts
-
- .foundonefree2:
-
- move.l ObjectPoints,a1
- move.w (a0),d2
- move.w newx,(a1,d2.w*8)
- move.w newz,4(a1,d2.w*8)
- move.b #1,shotstatus(a0)
- move.w #0,shotgrav(a0)
- move.b BULTYPE+1,shotsize(a0)
- move.b #0,shotanim(a0)
-
- move.l objroom,a1
- move.w (a1),12(a0)
- st worry(a0)
- move.l wallhitheight,d0
- move.l d0,accypos(a0)
- asr.l #7,d0
- move.w d0,4(a0)
-
- rts
-
- PLR1_nofire:
-
- rts
-
- TESTY: dc.l 0,0,0,0
-
- Player2Shot:
-
- tst.w PLR2_TimeToShoot
- beq.s okcanfire2
-
- move.w TempFrames,d0
- sub.w d0,PLR2_TimeToShoot
- bge PLR2_nofire
- move.w #0,PLR2_TimeToShoot
- bra PLR2_nofire
-
- okcanfire2:
-
- moveq #0,d0
- move.b p2_gunselected,d0
- move.b d0,tempgun
-
-
- move.l LINKFILE,a6
- lea GunBulletTypes(a6),a6
- lea BulletAnimData-GunBulletTypes(a6),a5
- lea (a6,d0.w*8),a6
- move.w G_BulletType(a6),d0 ; bullet type
- move.w d0,BULTYPE
- move.l #PLAYERTWOAMMO,a0
- move.w (a0,d0.w*2),AmmoInMyGun
-
- muls #B_BulStatLen,d0
- add.w d0,a5
-
- move.w B_MovementSpeed+2(a5),BulletSpd
-
- ; tst.w 12(a6)
- ; beq.s .itsaclick
-
- tst.b p2_fire
- beq PLR2_nofire
- ; bra .itsahold
- ;
- ;.itsaclick:
- ; tst.b p2_clicked
- ; beq PLR2_nofire
- ;
- ;.itsahold:
-
- move.w PLR2_angpos,d0
- move.w d0,tempangpos
- move.l #SineTable,a0
- lea (a0,d0.w),a0
- move.w (a0),tempxdir
- move.w 2048(a0),tempzdir
- move.w PLR2_xoff,tempxoff
- move.w PLR2_zoff,tempzoff
- move.l PLR2_yoff,tempyoff
- add.l #10*128,tempyoff
- move.b PLR2_StoodInTop,tempStoodInTop
- move.l PLR2_Roompt,tempRoompt
- move.l #%10011,d7
- move.w #-1,d0
- move.l #0,targetydiff
- move.l #$7fff,d1
-
- move.l ZoneAdds,a3
-
- move.l #PLR2_ObsInLine,a1
- move.l ObjectData,a0
- move.l #PLR2_ObjDists,a2
- findclosestinline2
-
- tst.w (a0)
- blt outofline2
-
- cmp.b #3,16(a0)
- beq notlinedup2
-
- tst.b (a1)+
- beq.s notlinedup2
- btst #1,17(a0)
- beq.s notlinedup2
- tst.w 12(a0)
- blt.s notlinedup2
- move.b 16(a0),d6
- btst d6,d7
- beq.s notlinedup2
-
- tst.b numlives(a0)
- beq.s notlinedup2
- move.w (a0),d5
- move.w (a2,d5.w*2),d6
- move.w 4(a0),d2
- ext.l d2
- asl.l #7,d2
- sub.l PLR2_yoff,d2
- move.l d2,d3
- bge.s .oknotneg
- neg.l d2
- .oknotneg:
- divs #44,d2
- cmp.w d6,d2
- bgt.s notlinedup2
-
- cmp.w d6,d1
- blt.s notlinedup2
- move.w d6,d1
- move.l a0,a4
-
- ; We have a closer enemy lined up.
- move.l d3,targetydiff
- move.w d5,d0
-
- notlinedup2:
- add.w #64,a0
- bra findclosestinline2
-
- outofline2:
-
-
- move.w d1,targdist
-
- move.l targetydiff,d5
- sub.l PLR2_height,d5
- add.l #18*256,d5
- move.w d1,closedist
-
- move.w BulletSpd,d2
- asr.w d2,d1
- tst.w d1
- bgt.s okdistthing2
- moveq #1,d1
- okdistthing2
- divs d1,d5
- move.w d5,bulyspd
-
- move.w AmmoInMyGun,d2
- move.w G_BulletsPerShot(a6),d1
- cmp.w d1,d2
- bge.s .okcanshoot
-
- move.l PLR2_Obj,a2
- move.w (a2),d0
- move.l #ObjRotated,a2
- move.l (a2,d0.w*8),Noisex
- move.w #300,Noisevol
- move.w #100,PLAYERTWONOISEVOL
- move.w #12,Samplenum
- clr.b notifplaying
- move.b #$fb,IDNUM
- jsr MakeSomeNoise
-
- rts
-
- .okcanshoot:
-
- cmp.b #'s',mors
- bne.s .notplr2
- move.l PLR1_Obj,a2
- move.w #1,ObjTimer+128(a2)
- .notplr2:
-
- move.w G_DelayBetweenShots(a6),PLR2_TimeToShoot
-
- move.b MaxFrame,PLR2_GunFrame
- sub.w d1,d2
-
- move.l #PLAYERTWOAMMO,a2
- add.w BULTYPE,a2
- add.w BULTYPE,a2
- move.w d2,(a2)
-
- move.l PLR2_Obj,a2
- move.w (a2),d2
- move.l #ObjRotated,a2
- move.l (a2,d2.w*8),Noisex
- move.w #100,PLAYERTWONOISEVOL
- move.w #300,Noisevol
- move.w G_SoundEffect(a6),Samplenum
- move.b #2,chanpick
- clr.b notifplaying
- movem.l d0/a0/d5/d6/d7/a6/a4/a5,-(a7)
- move.b #$fb,IDNUM
- jsr MakeSomeNoise
- movem.l (a7)+,d0/a0/d5/d6/d7/a6/a4/a5
-
- tst.w d0
- blt nothingtoshoot2
-
- tst.l B_Gravity(a5)
- beq.s .notuseaim
- move.w PLR2_AIMSPD,d2
- move.w #8,d1
- sub.w BulletSpd,d1
- asr.w d1,d2
- move.w d2,bulyspd
- .notuseaim
-
- tst.w B_VisibleOrInstant+2(a5)
- beq PLR2FIREBULLET
-
- ; instant effect: check for hitting:
-
- move.w G_BulletsPerShot(a6),d7
-
- FIREBULLETS2:
-
- movem.l a0/a1/d7/d0/a4/a5,-(a7)
- jsr GetRand
-
- move.l ObjectPoints,a1
- move.w (a4),d1
- lea (a1,d1.w*8),a1
-
- and.w #$7fff,d0
- move.w (a1),d1
- sub.w PLR2_xoff,d1
- muls d1,d1
- move.w 4(a1),d2
- sub.w PLR2_zoff,d2
- muls d2,d2
- add.l d2,d1
- asr.l #6,d1
- ext.l d0
- asl.l #1,d0
- cmp.l d1,d0
- bgt.s .hitplr
-
- movem.l (a7)+,a0/a1/d7/d0/a5/a4
- move.l d0,-(a7)
- bsr PLR2MISSINSTANT
- move.l (a7)+,d0
-
- bra.s .missplr
- .hitplr:
-
- movem.l (a7)+,a0/a1/d7/d0/a5/a4
- move.l d0,-(a7)
- bsr PLR2HITINSTANT
- move.l (a7)+,d0
-
- .missplr:
-
- subq #1,d7
- bgt.s FIREBULLETS2
-
- rts
-
- PLR2_AIMSPD: dc.l 0
-
- nothingtoshoot2:
- move.w PLR2_AIMSPD,d0
- move.w #8,d1
- sub.w BulletSpd,d1
- asr.w d1,d0
- move.w d0,bulyspd
- tst.w B_VisibleOrInstant+2(a5)
- beq PLR2FIREBULLET
-
- move.w #0,bulyspd
-
- move.w PLR2_xoff,oldx
- move.w PLR2_zoff,oldz
- move.w PLR2_sinval,d0
- asr.w #7,d0
- add.w oldx,d0
- move.w d0,newx
- move.w PLR2_cosval,d0
- asr.w #7,d0
- add.w oldz,d0
- move.w d0,newz
- move.l PLR2_yoff,d0
- add.l #10*128,d0
- move.l d0,oldy
-
- move.l d0,d1
- jsr GetRand
- and.w #$fff,d0
- sub.w #$800,d0
- ext.l d0
- add.l d0,d1
-
- move.l d1,newy
-
- st exitfirst
- clr.b wallbounce
- move.w #0,extlen
- move.b #$ff,awayfromwall
- move.w #%0000010000000000,wallflags
- move.l #0,StepUpVal
- move.l #$1000000,StepDownVal
- move.l #0,thingheight
- move.l PLR2_Roompt,objroom
- movem.l d0-d7/a0-a6,-(a7)
-
- .again:
- jsr MoveObject
- tst.b hitwall
- bne.s .nofurther
- move.w newx,d0
- sub.w oldx,d0
- add.w d0,oldx
- add.w d0,newx
- move.w newz,d0
- sub.w oldz,d0
- add.w d0,oldz
- add.w d0,newz
- move.l newy,d0
- sub.l oldy,d0
- add.l d0,oldy
- add.l d0,newy
- bra .again
-
- .nofurther:
-
- movem.l (a7)+,d0-d7/a0-a6
-
- move.l PlayerShotData,a0
- move.w #19,d1
- .findonefree2
- move.w 12(a0),d2
- blt.s .foundonefree2
- adda.w #64,a0
- dbra d1,.findonefree2
-
- rts
-
- .foundonefree2:
-
- move.l ObjectPoints,a1
- move.w (a0),d2
- move.w newx,(a1,d2.w*8)
- move.w newz,4(a1,d2.w*8)
- move.b #1,shotstatus(a0)
- move.w #0,shotgrav(a0)
- move.b BULTYPE+1,shotsize(a0)
- move.b #0,shotanim(a0)
-
- move.l objroom,a1
- move.w (a1),12(a0)
- st worry(a0)
- move.l wallhitheight,d0
- move.l d0,accypos(a0)
- asr.l #7,d0
- move.w d0,4(a0)
-
- rts
-
- PLR2_nofire:
-
- rts
-
-
- BulletSpd: dc.w 0
-
- *******************************************************
-
- tempyoff: dc.l 0
- tempStoodInTop: dc.w 0
- tempxdir: dc.w 0
- tempzdir: dc.w 0
- tempgun: dc.w 0
- tstfire: dc.w 0
- PLR1FIREBULLET:
-
- move.l #%100011,d7
-
- move.b MaxFrame,PLR1_GunFrame
- move.l PLR1_Obj,a2
- move.w G_BulletsPerShot(a6),d5
-
- move.w d5,d6
- subq #1,d6
- muls #128,d6
- neg.w d6
- add.w tempangpos,d6
- and.w #8190,d6
-
- bra firefive
-
- PLR2FIREBULLET:
- move.l #%10011,d7
-
- move.b MaxFrame,PLR2_GunFrame
- move.l PLR2_Obj,a2
- move.w G_BulletsPerShot(a6),d5
-
- move.w d5,d6
- subq #1,d6
- muls #128,d6
- neg.w d6
- add.w tempangpos,d6
- and.w #8190,d6
-
- firefive:
-
- move.l PlayerShotData,a0
- move.w #19,d1
- .findonefree
- move.w 12(a0),d0
- blt.s .foundonefree
- adda.w #64,a0
- dbra d1,.findonefree
-
- rts
-
- .foundonefree
- move.w B_Gravity+2(a5),shotgrav(a0)
- move.b B_BounceOffWalls+3(a5),shotflags(a0)
- move.b B_BounceOffFloors+3(a5),shotflags+1(a0)
-
- move.w bulyspd,d0
-
- cmp.w #20*128,d0
- blt.s .okdownspd
- move.w #20*128,d0
- .okdownspd:
-
- cmp.w #-20*128,d0
- bgt.s .okupspd
- move.w #-20*128,d0
- .okupspd:
-
- ; add.w G_InitialYVel(a6),d0
-
- move.w d0,bulyspd
-
- move.l #ObjRotated,a2
- move.b BULTYPE+1,shotsize(a0)
- move.b B_DamageToTarget+3(a5),shotpower(a0)
-
- move.l ObjectPoints,a1
- move.w (a0),d1
- lea (a1,d1.w*8),a1
- move.w tempxoff,(a1)
- move.w tempzoff,4(a1)
-
- move.l #SineTable,a1
- move.w (a1,d6.w),d0
- ext.l d0
- add.w #2048,a1
- move.w (a1,d6.w),d2
- ext.l d2
-
- add.w #256,d6
- and.w #8190,d6
-
- move.w BulletSpd,d1
- asl.l d1,d0
- move.l d0,shotxvel(a0)
- ext.l d2
- asl.l d1,d2
- move.b #2,16(a0)
- move.l d2,shotzvel(a0)
- move.w bulyspd,shotyvel(a0)
- move.b tempStoodInTop,ObjInTop(a0)
- move.w #0,shotlife(a0)
- move.l d7,EnemyFlags(a0)
- move.l tempRoompt,a2
- move.w (a2),12(a0)
- move.l tempyoff,d0
- add.l #20*128,d0
- move.l d0,accypos(a0)
- st worry(a0)
- asr.l #7,d0
- move.w d0,4(a0)
-
- sub.w #1,d5
- bgt firefive
-
- rts
-
- PLR1HITINSTANT:
-
- ; Just blow it up.
-
- move.l PlayerShotData,a0
- move.w #19,d1
- .findonefree
- move.w 12(a0),d2
- blt.s .foundonefree
- adda.w #64,a0
- dbra d1,.findonefree
-
- rts
-
- .foundonefree:
-
- move.b #2,16(a0)
- move.l ObjectPoints,a1
- move.w (a0),d2
- move.l (a1,d0.w*8),(a1,d2.w*8)
- move.l 4(a1,d0.w*8),4(a1,d2.w*8)
- move.b #1,shotstatus(a0)
- move.w #0,shotgrav(a0)
- move.b BULTYPE+1,shotsize(a0)
- move.b #0,shotanim(a0)
-
- move.w 4(a4),d1
- ext.l d1
- asl.l #7,d1
- move.l d1,accypos(a0)
- move.w 12(a4),12(a0)
- st worry(a0)
- move.w 4(a4),4(a0)
-
- move.w B_DamageToTarget+2(a5),d0
- add.b d0,damagetaken(a4)
-
- move.w tempxdir,d1
- ext.l d1
- asl.l #3,d1
- swap d1
- move.w d1,ImpactX(a4)
- move.w tempzdir,d1
- ext.l d1
- asl.l #3,d1
- swap d1
- move.w d1,ImpactZ(a4)
-
- rts
-
- PLR1MISSINSTANT:
-
- move.w PLR1_xoff,oldx
- move.w PLR1_zoff,oldz
- move.l PLR1_yoff,d1
- add.l #10*128,d1
- move.l d1,oldy
-
- move.w (a4),d0
- move.l ObjectPoints,a1
- move.w (a1,d0.w*8),d2
- sub.w oldx,d2
- asr.w #1,d2
- add.w oldx,d2
- move.w d2,newx
- move.w 4(a1,d0.w*8),d2
- sub.w oldz,d2
- asr.w #1,d2
- add.w oldz,d2
- move.w d2,newz
-
- move.w 4(a0),d2
- ext.l d2
- asl.l #7,d2
- move.l d2,newy
-
- st exitfirst
- clr.b wallbounce
- move.w #0,extlen
- move.b #$ff,awayfromwall
- move.w #%0000010000000000,wallflags
- move.l #0,StepUpVal
- move.l #$1000000,StepDownVal
- move.l #0,thingheight
- move.l PLR1_Roompt,objroom
- movem.l d0-d7/a0-a6,-(a7)
-
- .again:
- jsr MoveObject
- tst.b hitwall
- bne.s .nofurther
- move.w newx,d1
- sub.w oldx,d1
- add.w d1,oldx
- add.w d1,newx
- move.w newz,d1
- sub.w oldz,d1
- add.w d1,oldz
- add.w d1,newz
- move.l newy,d1
- sub.l oldy,d1
- add.l d1,oldy
- add.l d1,newy
- bra .again
-
- .nofurther:
-
- movem.l (a7)+,d0-d7/a0-a6
-
- move.l PlayerShotData,a0
- move.w #19,d1
- .findonefree2
- move.w 12(a0),d2
- blt.s .foundonefree2
- adda.w #64,a0
- dbra d1,.findonefree2
-
- rts
-
- .foundonefree2:
-
- move.b #2,16(a0)
- move.l ObjectPoints,a1
- move.w (a0),d2
- move.w newx,(a1,d2.w*8)
- move.w newz,4(a1,d2.w*8)
- move.b #1,shotstatus(a0)
- move.w #0,shotgrav(a0)
- move.b BULTYPE+1,shotsize(a0)
- move.b #0,shotanim(a0)
-
- move.l objroom,a1
- move.w (a1),12(a0)
- st worry(a0)
- move.l newy,d1
- move.l d1,accypos(a0)
- asr.l #7,d1
- move.w d1,4(a0)
-
- rts
-
-
- PLR2HITINSTANT:
-
- ; Just blow it up.
-
- move.l PlayerShotData,a0
- move.w #19,d1
- .findonefree
- move.w 12(a0),d2
- blt.s .foundonefree
- adda.w #64,a0
- dbra d1,.findonefree
-
- rts
-
- .foundonefree:
-
- move.b #2,16(a0)
- move.l ObjectPoints,a1
- move.w (a0),d2
- move.l (a1,d0.w*8),(a1,d2.w*8)
- move.l 4(a1,d0.w*8),4(a1,d2.w*8)
- move.b #1,shotstatus(a0)
- move.w #0,shotgrav(a0)
- move.b BULTYPE+1,shotsize(a0)
- move.b #0,shotanim(a0)
-
- move.w 4(a4),d1
- ext.l d1
- asl.l #7,d1
- move.l d1,accypos(a0)
- move.w 12(a4),12(a0)
- st worry(a0)
- move.w 4(a4),4(a0)
-
- move.w B_DamageToTarget+2(a5),d0
- add.b d0,damagetaken(a4)
-
- move.w tempxdir,d1
- ext.l d1
- asl.l #3,d1
- swap d1
- move.w d1,ImpactX(a4)
- move.w tempzdir,d1
- ext.l d1
- asl.l #3,d1
- swap d1
- move.w d1,ImpactZ(a4)
-
- rts
-
- PLR2MISSINSTANT:
-
- move.w PLR2_xoff,oldx
- move.w PLR2_zoff,oldz
- move.l PLR2_yoff,d1
- add.l #10*128,d1
- move.l d1,oldy
-
- move.w (a4),d0
- move.l ObjectPoints,a1
- move.w (a1,d0.w*8),d2
- sub.w oldx,d2
- asr.w #1,d2
- add.w oldx,d2
- move.w d2,newx
- move.w 4(a1,d0.w*8),d2
- sub.w oldz,d2
- asr.w #1,d2
- add.w oldz,d2
- move.w d2,newz
-
- move.w 4(a0),d2
- ext.l d2
- asl.l #7,d2
- move.l d2,newy
-
- st exitfirst
- clr.b wallbounce
- move.w #0,extlen
- move.b #$ff,awayfromwall
- move.w #%0000010000000000,wallflags
- move.l #0,StepUpVal
- move.l #$1000000,StepDownVal
- move.l #0,thingheight
- move.l PLR2_Roompt,objroom
- movem.l d0-d7/a0-a6,-(a7)
-
- .again:
- jsr MoveObject
- tst.b hitwall
- bne.s .nofurther
- move.w newx,d1
- sub.w oldx,d1
- add.w d1,oldx
- add.w d1,newx
- move.w newz,d1
- sub.w oldz,d1
- add.w d1,oldz
- add.w d1,newz
- move.l newy,d1
- sub.l oldy,d1
- add.l d1,oldy
- add.l d1,newy
- bra .again
-
- .nofurther:
-
- movem.l (a7)+,d0-d7/a0-a6
-
- move.l PlayerShotData,a0
- move.w #19,d1
- .findonefree2
- move.w 12(a0),d2
- blt.s .foundonefree2
- adda.w #64,a0
- dbra d1,.findonefree2
-
- rts
-
- .foundonefree2:
-
- move.b #2,16(a0)
- move.l ObjectPoints,a1
- move.w (a0),d2
- move.w newx,(a1,d2.w*8)
- move.w newz,4(a1,d2.w*8)
- move.b #1,shotstatus(a0)
- move.w #0,shotgrav(a0)
- move.b BULTYPE+1,shotsize(a0)
- move.b #0,shotanim(a0)
-
- move.l objroom,a1
- move.w (a1),12(a0)
- st worry(a0)
- move.l newy,d1
- move.l d1,accypos(a0)
- asr.l #7,d1
- move.w d1,4(a0)
-
- rts
-